<?php

class Application_Model_ProyectosDCPost extends Sgit_Model
{
    protected $_name = 'gestion_tareas';
    protected $_primary = 'id';


    public function getRowset($values)
    {

        //permite pasar unico parametro id del contador
        if(is_numeric($values)){
            $id=$values;unset($values);$values['id']=$id;unset($id);
        }

        $select=$this->getAdapter()
            ->select()
            ->from(array($this->_name));
            
            
        if (is_array($values['id']) || is_numeric($values['id']))
            $select->where("{$this->_name}.id IN (?)", $values['id']);

        if (is_numeric($values['id_proyecto']))
            $select->where("{$this->_name}.id_proyecto = ?", $values['id_proyecto']);   
        
        
        if ($values['respuesta']=='null')
            $select->where("{$this->_name}.respuesta_a IS NULL");
    
        if ($values['respuesta']=='not null')
            $select->where("{$this->_name}.respuesta_a IS NOT NULL");
            

        if (is_array($values['id_cat']) || is_numeric($values['id_cat']))
            $select->where("{$this->_name}.id_cat IN(?)", $values['id_cat']);
          
        if (is_array($values['id_sub_cat']) || is_numeric($values['id_sub_cat']))
            $select->where("{$this->_name}.id_sub_cat  IN(?)", $values['id_sub_cat']);

          
        $order = $values['order'] ? $values['order'] : array("fecha desc", 'id DESC');
        if($order)    
            $select->order($order);    
          
        
        if ($values['respuesta']=='null' && $values['id_proyecto'])
        {
            if(!$this->respuestas)  $this->respuestas=$this->getRespuestasAll($values['id_proyecto']);
             
        }
        

        $rows = $this->getAdapter()->fetchAll($select);
        $rows = $this->_prepara($rows);
         
        return $rows;
    }



    public function getTarea($id)
    {
        return $this->getTareas('',array(), $id);
    }



    public function getTareas($id_proyecto, $values = array(), $id = null)
    {
        $select = $this->getAdapter()->select();
        $select->from(array('gestion_tareas'));
       

        if (is_numeric($id))
        {
            $select->where('gestion_tareas.id= ?', $id);
            
        } else
        {
            
            $select->where('id_proyecto= ?', $id_proyecto);
            $select->where('respuesta_a IS NULL');
        
            //filter1
            if ($values['id_cat'])
                $select->where('gestion_tareas.id_cat= ?', $values['id_cat']);
            //filter2
            if ($values['id_sub_cat'])
                $select->where('gestion_tareas.id_sub_cat= ?', $values['id_sub_cat']);
            //filter2
            if ($values['id_sub_cat_in'])
                $select->where('gestion_tareas.id_sub_cat IN(?)', $values['id_sub_cat_in']);
            $select->order(array("fecha desc", 'id DESC'));
            
            
            if(!$this->respuestas){
                $this->respuestas=$this->getRespuestasAll($id_proyecto);
            }
        }

        $rows = $this->getAdapter()->fetchAll($select);
        $rows = $this->_prepara($rows);

        return $rows;

    }
    
    
    function getRespuestasAll($id_proyecto)
    {
       
        $select = $this->getAdapter()->select();
        $select->from(array($this->_name));

        $select->where('id_proyecto= ?', $id_proyecto);
        $select->where('respuesta_a IS NOT NULL');
        $select->order('fecha asc');

        $rows = $this->getAdapter()->fetchAll($select);
        $rows = $this->_prepara($rows);

        $rows= $this->assocArray($rows,'respuesta_a');

        return $rows;

    }
    
    
    
    


    function _prepara($rows)
    {
        $auth = Zend_Auth::getInstance();
        $auth->getIdentity()->id;


        $subCategorias = new Sgit_Form_Element_Select_Xml('ProyetosDCSubCategorias');
        $categorias = new Sgit_Form_Element_Select_Xml('ProyetosDCCategorias');

        $m_usuario = new Application_Model_Usuario();
        $subcat = $subCategorias->getMultiOptions();
        $cat = $categorias->getMultiOptions();


        foreach ((array )$rows as $k => $v)
        {

            $rows[$k]['subcat'] = $subcat[$v['id_sub_cat']];
            $rows[$k]['cat'] = $cat[$v['id_cat']];
            $rows[$k]['usuario'] = $m_usuario->cacheAssoc($v['id_usuario'], 'nombre');
            $rows[$k]['fecha'] = Sgit_Filter_DateDbToLocalize::filter($v['fecha'], 'dd-MM-yyyy HH:mm');
            $rows[$k]['editor'] = ($auth->getIdentity()->id == $v['id_usuario']);
            //$rows[$k]['respuestas'] = $this->_getRespuestas($v['id']);
            $rows[$k]['respuestas'] =$this->respuestas[$v['id']]; //$this->getRespuestas($v['id']);
            
            $rows[$k]['objeto_cambio_text'] = Sgit_Util_SiNo::run($v['objeto_cambio']);

        }

        return $rows;
    }

    public function getBySubCat($arraysubcat, $values = array(), $id = null)
    {

        $select = $this->getAdapter()->select();


        $select->from(array('gestion_tareas'), array('id_proyecto', 'fecha', 'notas', 'files', 'id_empresa', 'id_sub_cat'));
        $select->joinLeft('gestion_proyectos', 'gestion_proyectos.id = gestion_tareas.id_proyecto', array('proyecto', 'f_inicio', 'f_final', 'f_entrega', 'f_repla'));
        $select->joinLeft('zonas', 'zonas.id = gestion_proyectos.id_zona', array('zona' => 'nombre'));
        $select->joinLeft('usuarios', 'usuarios.id = gestion_proyectos.jefe1', array('responsable' => 'nombre'));
        $select->joinLeft('estado_proyecto', 'estado_proyecto.id = gestion_proyectos.estado', array('estado' => 'nombre'));


        if ($values['id_proyecto'])
            $select->where('gestion_proyectos.id= ?', $values['id_proyecto']);
        if ($values['id_zona'])
            $select->where('gestion_proyectos.id_zona= ?', $values['id_zona']);
        if ($values['id_sub_cat'])
            $select->where('gestion_tareas.id_sub_cat= ?', $values['id_sub_cat']);
        else
            $select->where('id_sub_cat IN(?)', $arraysubcat);


        $estado = ($values['estado']) ? $values['estado'] : 1;
        $select->where('gestion_proyectos.estado= ?', $estado);


        $rows = $this->getAdapter()->fetchAll($select);


        return $rows;

    }

    
    
    function getComite($cambio_aceptado,$fecha_peticion_cambio,$propone=null)
    {
        $select=$this->getAdapter()->select();
        $select->from(array($this->_name))->where("objeto_cambio = 1 ");
            

        if($cambio_aceptado){
             $select->where("cambio_aceptado = ?",$cambio_aceptado);
        }else{
             $select->where("cambio_aceptado IS NULL OR cambio_aceptado='VISTO'");
        }
        
        
        
        
        
        if(!is_null($propone))
        {
            $select->where("id_usuario = ?",$propone,INTEGER);
        }   
        
        
        
        Sgit_Util_dateRange::run($select,$fecha_peticion_cambio,'fecha_peticion_cambio');
            
        return $this->getAdapter()->fetchAll($select);

    }
  

    function changeComite($id, $valor,$notas)
    {
        
        $row=$this->getRow($id);
        
        $m_proyecto = new Application_Model_ProyectosDC();
        $proyecto=$m_proyecto->getRow($row['id_proyecto']);
        

        
        switch($valor){
            case 'SI':
                $estado=6;
                $accion='aceptado';
                
                if($row['id_sub_cat']==17)//cierre proyecto 17
                {
                    $updateProyecto['estado']=$estado;
                    $updateProyecto['f_final']=$row['fecha_peticion_cambio'];
                    $m_proyecto->updateRow($updateProyecto,$row['id_proyecto']);
                }
                break;
            case 'VISTO':
                $accion='visto y aplazado';
                break;
            default:
                $estado=1;
                $accion='rechazado';
        }


        
        
        
        
        $update['responde_cambio']=$this->_auth->getIdentity()->id;
        $update['cambio_aceptado']=$valor;
        $update['notas_cambio']=$notas;
        
        $result= $this->updateRow($update,$id);
        
        if($result['status']=='ok'){
            $mail=new Sgit_Mail();
            $entrada['de'] = $this->_auth->getIdentity()->id;
            $entrada['asunto'] = 'Comite de Cambio: '. ucfirst($accion)." ".$proyecto['proyecto'];
            $entrada['body'] = "El Comite de Cambio ha $accion la propuesta de ".Sgit_Memory::single()->model('Usuario')->getOne('nombre',$row['id_usuario']).":<br><br><br>Proyecto: ".$proyecto['proyecto']."<br>  ".$row['notas'];
            $entrada['body'] .="<br><br><b>Comentarios:<br>$notas</b>";

            $entrada['destinatarios'] = array($row['id_usuario']);
            $entrada['destinatariosCC']=unserialize($proyecto['accesos']);
            array_push($entrada['destinatariosCC'],34);
   
            $entrada['id_zona'] = $row['id_zona'];
            $entrada['tipo'] = 'Otros';
			
            
			$mail->sendMsg($entrada);
			
            return array('status'=>'ok');
        }else{
            return array('status'=>'ko');
        }
        
    }

}
